# -*- coding:utf-8 -*-

from app import db


class Car(db.Model):  # 该表用于记录车辆的信息
    __tablename__ = 'car'
    id = db.Column(db.Integer, primary_key=True)
    number = db.Column(db.String(20))  # 车辆的唯一编号
    brand = db.Column(db.Integer)  # 车辆品牌
    model = db.Column(db.String(64), nullable=False)  # 车辆型号，即前台显示的标题
    car_type = db.Column(db.Integer)  # 车型的代号，小型车、大型车等
    specific = db.Column(db.Boolean, default=0)  # 标志该车辆是否是指定的车型
    description = db.Column(db.UnicodeText)  # 车辆的描述
    color = db.Column(db.Integer)  # 车辆颜色
    frame_number = db.Column(db.String(64), nullable=False)  # 车架号
    price = db.Column(db.Float, nullable=False)  # 价格
    first_licensing_date = db.Column(db.Date)  # 首次上牌时间
    licensing_place = db.Column(db.String(64))  # 上牌地
    mileage = db.Column(db.Float)  # 里程数
    type_of_gearbox = db.Column(db.Integer)  # 变速箱类型
    emission_standard = db.Column(db.Integer)  # 排放标准
    displacement = db.Column(db.Float)  # 排量
    number_of_seats = db.Column(db.Integer)  # 座位数
    age_of_car = db.Column(db.Float)  # 车龄,年份
    owner_type = db.Column(db.SmallInteger)  # 车主的类型，0为自营，1为商家，2为个人
    owner_id = db.Column(db.Integer)  # 车主的id，若车主类型为0则该字段没有意义
    owner_name = db.Column(db.String(45))  # 车主名称
    submission_date = db.Column(db.DateTime, nullable=False)  # 提交时间
    new = db.Column(db.Boolean)  # 是否为新车，0为二手车，1为新车
    annual_inspection = db.Column(db.Date)  # 年检日期
    compulsory_insurance = db.Column(db.Date)  # 交强险日期
    commercial_insurance = db.Column(db.Date)  # 商业险日期
    transfer_times = db.Column(db.Integer)  # 过户次数
    main_pic = db.Column(db.String(64))  # 车辆主图的url
    city = db.Column(db.String(20))  # 车辆所在城市
    city_py = db.Column(db.String(64))  # 车辆所在城市拼音
    address = db.Column(db.Text)  # 看车地址
    contact = db.Column(db.String(45))  # 看车联系人
    phone = db.Column(db.String(20))  # 联系人电话
    state = db.Column(db.SmallInteger, nullable=False)  # 车辆状态,0待审核，1已生效，2已拒绝，3已售，4下架
    pic = db.relationship('Car_Pictures', backref='car', lazy='joined')

    def save(self):
        db.session.add(self)
        db.session.commit()


class Business(db.Model):  # 该表用于记录已有的业务
    __tablename__ = 'business'
    id = db.Column(db.Integer, primary_key=True)
    order = db.Column(db.Integer)  # 业务的先后顺序
    name = db.Column(db.String(45))  # 业务名称
    picture = db.Column(db.String(64))  # 业务图片的url
    info = db.Column(db.String(32))  # 业务介绍
    details = db.Column(db.String(250))  # 业务详情
    bs_type = db.Column(db.String(10))  # 业务类型，有rent，finance，service

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()


class Car_Pictures(db.Model):  # 该表用于保存与车辆有关的各类型的图片
    __tablename__ = 'car_pictures'
    id = db.Column(db.Integer, primary_key=True)
    car_id = db.Column(db.Integer, db.ForeignKey('car.id'), nullable=False)  # 相关的车辆id
    url = db.Column(db.Text, nullable=False)  # 图片地址
    picture_type = db.Column(db.SmallInteger, nullable=False)  # 图片类型,0车辆实拍，1为检测报告，2为各种证件实拍

    def save(self):
        db.session.add(self)
        db.session.commit()
